let times = 3;
export const loaderWeiXinSDK = (callback) => {
    const head = document.getElementsByTagName('head')[0];
    const script = document.createElement('script');
    script.type = 'text/javascript';
    script.src = `https://res.wx.qq.com/open/js/jweixin-1.6.0.js?timestamp=${Date.now()}`;
    head.appendChild(script);
    script.onload = ()=>{
        callback && callback()
    }
}
// 微信页面权限验证配置，参数为需要使用的JS接口列表
export const wxConfig = (configData, list, callback) => {
    wx.config({
        debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来，若要查看传入的参数，可以在pc端打开，参数信息会通过log打出，仅在pc端时才会打印。
        appId: configData.app_id, // 必填，公众号的唯一标识
        timestamp: configData.timestamp, // 必填，生成签名的时间戳
        nonceStr: configData.noncestr, // 必填，生成签名的随机串
        signature: configData.sign, // 必填，签名
        jsApiList: list // 必填，需要使用的JS接口列表
    });
    wx.ready(function () {
        callback && callback();
    });
    wx.error(function (err) {
        // 失败，重新执行
        if (times > 0) {
            wxConfig(configData, list);
            times--;
        }
    });
};

const checkApi = (list, callback) => {
    wx.checkJsApi({
        jsApiList: list, // 需要检测的JS接口列表，所有JS接口列表见附录2,
        success: function (res) {
            callback && callback(res);
        }
    });
}

// 注册页面分享内容
export const wxShareLink = ({ title, desc, imgUrl, link }, callback) => {
    wx.onMenuShareAppMessage({
        title, // 分享标题
        desc, // 分享描述
        link, // 分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
        imgUrl, // 分享图标
        type: 'link', // 分享类型,music、video或link，不填默认为link
        dataUrl: '', // 如果type是music或video，则要提供数据链接，默认为空
        success: function () {
            callback && callback();
        },
        fail: function (err) {
            console.log('分享失败：', err)
        }
    });
}

// 隐藏操作按钮
export const hideWxMenuItems = (list) => {
    wx.hideMenuItems({
        menuList: list // 要隐藏的菜单项，只能隐藏“传播类”和“保护类”按钮，所有menu项见附录3
    });
}
// 显示操作按钮
export const showWxMenuItems = (list) => {
    wx.showMenuItems({
        menuList: list // 要隐藏的菜单项，只能隐藏“传播类”和“保护类”按钮，所有menu项见附录3
    });
}

export const closeWxWindow = () => {
    wx.closeWindow();
}

export const redirectFunc = (appid, uri, comId) => {
    const redirect_uri = encodeURIComponent(uri);
    if (comId) {
        window.location.href = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appid}&redirect_uri=${redirect_uri}&response_type=code&scope=snsapi_base&state=123&component_appid=${comId}#wechat_redirect`;
    } else {
        window.location.href = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appid}&redirect_uri=${redirect_uri}&response_type=code&scope=snsapi_base&state=123#wechat_redirect`;
    }
}

export const getUrlParam = (name) => {
    const reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i');
    const reg_rewrite = new RegExp('(^|/)' + name + '/([^/]*)(/|$)', 'i');
    const r = window.location.search.substr(1).match(reg);
    const q = window.location.pathname.substr(1).match(reg_rewrite);
    if (r != null) {
        return decodeURIComponent(r[2]);
    } else if (q != null) {
        return decodeURIComponent(q[2]);
    } else {
        return null;
    }
}